package lew.bing.gwalo.annotations;

import java.lang.annotation.*;

/**
 * Created by 刘国兵 on 2018/7/8.
 * 速率限制
 * 使用guava的令牌桶
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Inherited
public @interface RateLimit {

    /**
     * 初始化速率，默认为一秒处理10条
     * @return 每秒处理多少条
     */
    int defaultRate() default 10;

    /**
     * 无法获取令牌时是否阻塞，默认为true
     * @return 无法获取令牌时是否阻塞
     */
    boolean block() default true;

    /**
     * 信号量key，可以使用el表达式，方法参数的名称，#methodName表示方法名,#arg0代表第一个参数
     * 默认为方法名
     * @return
     */
    String key() default "";

    String group() default "";

}
